/**
 * 成员管理
 * 
 * @param $
 */
(function($) {

	var SystemMemberObject = {

		init : function() {
			// 初始化成员表格
			this._init_member_table();
			// 添加成员按钮事件
			this._reg_add_member_btn();
			// 删除成员按钮事件
			this._reg_delete_member_btn();
			// 新增或者修改成员信息模态框的“提交按钮”
			this._reg_submit_btn();
			// 修改成员按钮
			this._reg_update_member_btn();
			// 显示所属角色按钮
			this._reg_show_role_btn();
			// 查询按钮
			this._reg_search_btn();
			// 添加角色按钮事件
			this._reg_role_add_btn();
			// 删除角色按钮事件
			this._reg_role_delete_btn();
			// 注册重置密码按钮
			this._reg_reset_password_btn();
		},
		// 注册重置密码按钮
		_reg_reset_password_btn : function() {
			$(document).on("click", ".pf-reset-password-btn", function() {
				var userId = $(this).closest("tr").data("data").id;
				layer.confirmMsg("确定重置密码？<br/>默认的重置密码为 “123456”", function() {
					layer.loadingMsg();
					$.ajax({
						type : "GET",
						cache : false,
						data : {
							id : userId
						},
						dataType : "json",
						url : "/manage/system/member/reset/password",
						success : function(data) {
							// 关闭加载框
							layer.closeLoadingMsg();
							if (data != undefined && data.isSuccess == true) {
								layer.msg('重置成功', {
									time : 1000,
									offset : 0,
									shift : 6
								});
							} else {
								layer.errorMsg(data.message);
							}
						}
					});
					return true;
				});
			});
		},
		// 查询按钮
		_reg_search_btn : function() {
			$(".pf-search-btn").click(function() {
				//
				var val = $("#toolbar input[name='searchText']").val();
				// 刷新
				$("#pf-members-table").bootstrapTable("refresh", {
					url : "/manage/system/member/get/all?searchText=" + encodeURIComponent(val),
				});
			});
			// 回车事件
			$("#toolbar input[name='searchText']").keydown(function(e) {
				if (e.keyCode == 13) {
					var val = $("#toolbar input[name='searchText']").val();
					// 刷新
					$("#pf-members-table").bootstrapTable("refresh", {
						url : "/manage/system/member/get/all?searchText=" + encodeURIComponent(val),
					});
				}
			});
		},

		// 删除角色按钮事件
		_reg_role_delete_btn : function() {
			$(document).on("click", ".pf-delete-role-btn", function() {

				// 角色id
				var roleId = $(this).closest("tr").data("data").id;
				// 成员id
				var memberId = $("#pf-add-role-modal").data("userId");
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$.ajax({
					type : "GET",
					cache : false,
					data : {
						roleId : roleId,
						memberId : memberId
					},
					dataType : "json",
					url : "/manage/system/member/delete/role",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							layer.msg('删除成功', {
								time : 1000,
								offset : 0,
								shift : 6
							});
							// 刷新
							$("#pf-role-table").bootstrapTable("refresh", {
								pageNumber : 1
							});
						} else {
							layer.msg(data.message, {
								icon : 2,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});

			});
		},
		// 添加角色按钮事件
		_reg_role_add_btn : function() {
			$(document).on("click", ".pf-add-role-btn", function() {
				// 角色id
				var roleId = $(this).closest("tr").data("data").id;
				// 成员id
				var memberId = $("#pf-add-role-modal").data("userId");
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$.ajax({
					type : "GET",
					cache : false,
					data : {
						roleId : roleId,
						memberId : memberId
					},
					dataType : "json",
					url : "/manage/system/member/add/role",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							layer.msg('添加成功', {
								time : 1000,
								offset : 0,
								shift : 6
							});
							// 刷新
							$("#pf-role-table").bootstrapTable("refresh", {
								pageNumber : 1
							});
						} else {
							layer.msg(data.message, {
								icon : 2,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});
			});
		},

		// 显示,修改,删除 所属角色按钮
		_reg_show_role_btn : function() {

			var isTableInit = false;
			$(document).on("click", ".pf-show-role-btn", function() {
				var $tr = $(this).closest("tr");
				// 设置成员id
				$("#pf-add-role-modal").data("userId", $tr.data("data").id)
				$("#pf-add-role-modal").modal("show");
				if (isTableInit == true) {
					_refresh_member_table($("#pf-role-table"), "/manage/system/member/get/roles?userId=" + $tr.data("data").id);
					_refresh_member_table($("#pf-role-all-table"), "/manage/system/member/get/roles/all");
				} else {
					isTableInit = true;
					// 初始化成员中的角色表
					_init_memeber_table($("#pf-role-table"), "/manage/system/member/get/roles?userId=" + $tr.data("data").id, false);
					// 初始化所有角色表
					_init_memeber_table($("#pf-role-all-table"), "/manage/system/member/get/roles/all", true);
				}
			});
			function _refresh_member_table($table, url) {
				$table.bootstrapTable("refresh", {
					url : url
				});
			}
			function _init_memeber_table($table, url, isAllMember) {
				$table
						.bootstrapTable({
							method : 'get',
							url : url,
							cache : false,
							// height
							// :
							// 400,
							sidePagination : 'server', // client
							// or
							// server
							queryParamsType : 'pageSize',
							striped : true,
							clickToSelect : true,
							pagination : true,
							pageSize : 50,
							pageList : [ 10, 20, 50, 100, 200 ],
							paginationDetail : true,
							paginationHAlign : 'right', // right,
							// left
							showColumns : true,
							showRefresh : true,
							minimumCountColumns : 2,
							checkboxHeader : false,
							clickToSelect : true,

							columns : [
									{
										field : 'id',
										title : '#',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false
									},
									{
										field : 'name',
										title : '角色名称',
										align : 'center',
										valign : 'middle',
										visible : true,
										sortable : false
									},

									{
										field : 'isEnable',
										title : '是否启用',
										align : 'center',
										valign : 'middle',
										visible : true,
										sortable : false,
										formatter : function(value, row, index) {
											if (value == true) {
												return '是';
											} else {
												return '否';
											}
										}
									},

									{
										field : 'option',
										title : '操作',
										align : 'center',
										valign : 'middle',
										visible : true,
										formatter : function(value, row, index) {
											if (isAllMember == true) {
												return '  <button type="button" class="btn btn-primary btn-xs pf-add-role-btn"><i class="glyphicon glyphicon-ok"></i>选择</button>&nbsp;';
											} else {
												return '  <button type="button" class="btn btn-primary btn-xs pf-delete-role-btn"><i class="glyphicon glyphicon-trash"></i>删除</button>&nbsp;';
											}
										}
									}, {
										field : 'mark',
										title : '备注',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false
									} ]
						});
			}

		},
		// 修改成员按钮
		_reg_update_member_btn : function() {
			$(document).on("click", ".pf-update-memeber-btn", function() {
				// 重置form
				$("#pf-member-save-form").resetForm();
				var $tr = $(this).closest("tr");
				var data = $tr.data("data");
				// 显示弹窗
				$("#pf-modal-title").html("修改成员信息");
				$("#pf-add-member-modal").modal("show");
				// 设置数据
				$("#pf-member-save-form input[name='id']").val(data.id);
				$("#pf-member-save-form input[name='loginname']").attr("disabled", "disabled");
				$("#pf-member-save-form input[name='loginname']").val(data.loginname);
				$("#pf-member-save-form input[name='realname']").val(data.realname);
				$("#pf-member-save-form input[name='tel']").val(data.tel);
				$("#pf-member-save-form input[name='email']").val(data.email);
				$("#pf-member-save-form input[name='isAdmin'][value='" + data.isAdmin + "']").trigger("click");
				$("#pf-member-save-form input[name='status'][value='" + data.status + "']").trigger("click");
				$("#pf-member-save-form input[name='mark']").val(data.mark);

			});
		},
		// 新增或者修改成员信息模态框的“提交按钮”
		_reg_submit_btn : function() {
			$(".pf-submit").click(function() {
				// 校验字段
				if (SystemMemberObject._validate_form_field() == false) {
					return;
				}
				// 处理中
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$("#pf-member-save-form").ajaxSubmit({
					dataType : "json",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							// 关闭 添加 用户的 form窗口
							$("#pf-add-member-modal").modal("hide");
							// 刷新
							$("#pf-members-table").bootstrapTable("refresh");

						} else {
							layer.msg(data.message, {
								icon : 3,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});
			});

		},
		// 删除成员按钮事件
		_reg_delete_member_btn : function() {
			$(document).on("click", ".pf-delete-memeber-btn", function() {
				var $tr = $(this).closest("tr");
				layer.msg('确定删除成员：' + $tr.data("data").loginname, {
					time : 0, // 20s后自动关闭
					icon : 3,
					shade : 0.3,
					btn : [ '确定', '取消' ],
					yes : function(index) {
						layer.close(index);
						var index = layer.msg('正在处理，请稍候。。。', {
							icon : 16,
							shade : 0.3
						});
						$.ajax({
							type : "GET",
							cache : false,
							data : {
								id : $tr.data("data").id
							},
							dataType : "json",
							url : "/manage/system/member/delete",
							success : function(data) {
								// 关闭加载框
								layer.close(index);
								if (data != undefined && data.isSuccess == true) {
									// 刷新
									$("#pf-members-table").bootstrapTable("refresh");
								} else {
									layer.msg(data.message, {
										icon : 2,
										shade : 0.3,
										btn : [ '确定' ]
									});
								}
							}
						});
					}
				});
			});

		},
		// 添加成员按钮事件
		_reg_add_member_btn : function() {
			$("#pf-add-member-btn").click(function() {
				// 重置form
				$("#pf-member-save-form").resetForm();
				$("#pf-member-save-form input[name='id']").val("");
				$("#pf-member-save-form input[name='loginname']").removeAttr("disabled");
				$("#pf-modal-title").html("添加成员");
				$("#pf-add-member-modal").modal("show");
			});
		},
		// 初始化成员表格
		_init_member_table : function() {
			$("#pf-members-table")
					.bootstrapTable(
							{
								method : 'get',
								url : "/manage/system/member/get/all",
								cache : false,
								// height : 400,
								sidePagination : 'server', // client or server
								queryParamsType : 'pageSize',
								// search : true,
								striped : true,
								clickToSelect : true,
								pagination : true,
								pageSize : 10,
								pageList : [ 10, 20, 50, 100, 200 ],
								paginationDetail : true,
								paginationHAlign : 'right', // right, left
								showColumns : true,
								showRefresh : true,
								minimumCountColumns : 2,
								checkboxHeader : false,
								clickToSelect : true,
								columns : [
										{
											field : 'id',
											title : '#',
											align : 'center',
											valign : 'middle',
											visible : false,
											sortable : false
										},
										{
											field : 'loginname',
											title : '登录名',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : true
										},
										{
											field : 'realname',
											title : '姓名',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false
										},
										{
											field : 'tel',
											title : '电话',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false
										},
										{
											field : 'isAdmin',
											title : '是否管理员',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false,
											formatter : function(value, row, index) {
												if (value == true) {
													return '是';
												} else {
													return '否';
												}
											}
										},
										{
											field : 'statusString',
											title : '状态',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false
										},
										{
											field : 'email',
											title : '邮件',
											align : 'left',
											valign : 'middle',
											visible : false,
											sortable : false
										},
										{
											field : 'lastLoginTime',
											title : '最后登录时间',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : true
										},
										{
											field : 'loginIp',
											title : '最后登录ip',
											align : 'center',
											valign : 'middle',
											visible : false,
											sortable : false
										},
										{
											field : 'mark',
											title : '备注',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false
										},
										{
											field : 'option',
											title : '操作',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false,
											formatter : function(value, row, index) {
												return '<button type="button" class="btn btn-success btn-xs pf-reset-password-btn"><i class="glyphicon glyphicon-pencil"></i>重置密码</button>&nbsp;'
														+ '<button type="button" class="btn btn-danger btn-xs pf-delete-memeber-btn"><i class="glyphicon glyphicon-trash"></i>删除</button>&nbsp;'
														+ '<button type="button" class="btn btn-success btn-xs pf-update-memeber-btn"><i class="glyphicon glyphicon-pencil"></i>修改</button>&nbsp;'
														+ '<button type="button" class="btn btn-info btn-xs pf-show-role-btn"><i class="glyphicon glyphicon-user"></i>角色</button>';
											}
										} ]
							});
		},
		/**
		 * 校验不能为空的字段
		 */
		_validate_form_field : function() {
			if ($("#pf-member-save-form input[name='loginname']").val() == "") {
				layer.errorMsg("登录名不能为空");
				return false;
			} else if ($("#pf-member-save-form input[name='realname']").val() == "") {
				layer.errorMsg("真实姓名不能为空");
				return false;
			} else {
				return true;
			}
		}
	}

	SystemMemberObject.init();
})(jQuery);